home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-09-16 | 17.0 KB | 575 lines | [TEXT/CCL2] |
-
- (in-package :traps) ;
- ; Created: Sunday, January 6, 1991 at 10:51 PM
- ; OSUtils.p
- ; Pascal Interface to the Macintosh Libraries
- ;
- ; Copyright Apple Computer, Inc. 1985-1990
- ; All rights reserved
- ;
-
- ;;;;;;;;;;;;;
- ;
- ; Modification History
- ;
- ; 04/28/93 mwp Release
- ; 01/16/93 bill in #_Date2Secs say %put-long instead of %put-ptr
- ; 08/05/92 bill fix #_EqualString
- ; ------------- 2.0
- ; 11/04/91 bill fix _HandAndHand
- ; 09/09/91 bill Fix _SwapMMUMode
- ; 08/23/91 bill remove bogus return specs in call forms
- ; Comment out _SetCurrentA5 & _SetA5
- ;
-
- ; $IFC UNDEFINED UsingIncludes
- ; $SETC UsingIncludes := 0
- ; $ENDC
-
- ; $IFC NOT UsingIncludes
-
- ; $ENDC
-
- ; $IFC UNDEFINED UsingOSUtils
- ; $SETC UsingOSUtils := 1
-
- ; $I+
- ; $SETC OSUtilsIncludes := UsingIncludes
- ; $SETC UsingIncludes := 1
- ; $IFC UNDEFINED UsingTypes
-
- (require-interface 'TYPES) ; $I $$Shell(PInterfaces)Types.p
- ; $ENDC
- ; $SETC UsingIncludes := OSUtilsIncludes
-
- (defconstant $useFree 0)
- (defconstant $useATalk 1)
- (defconstant $useAsync 2)
- (defconstant $useExtClk 3) ; Externally clocked
- (defconstant $useMIDI 4)
-
- ; *** Environs Equates ***
- (defconstant $curSysEnvVers 2) ; Updated to equal latest SysEnvirons version
-
- ; Machine Types
- (defconstant $envMac -1)
- (defconstant $envXL -2)
- (defconstant $envMachUnknown 0)
- (defconstant $env512KE 1)
- (defconstant $envMacPlus 2)
- (defconstant $envSE 3)
- (defconstant $envMacII 4)
- (defconstant $envMacIIx 5)
- (defconstant $envMacIIcx 6)
- (defconstant $envSE30 7)
- (defconstant $envPortable 8)
- (defconstant $envMacIIci 9)
- (defconstant $envMacIIfx 11)
-
- ; CPU types
- (defconstant $envCPUUnknown 0)
- (defconstant $env68000 1)
- (defconstant $env68010 2)
- (defconstant $env68020 3)
- (defconstant $env68030 4)
- (defconstant $env68040 5)
-
- ; Keyboard types
- (defconstant $envUnknownKbd 0)
- (defconstant $envMacKbd 1)
- (defconstant $envMacAndPad 2)
- (defconstant $envMacPlusKbd 3)
- (defconstant $envAExtendKbd 4)
- (defconstant $envStandADBKbd 5)
- (defconstant $envPrtblADBKbd 6)
- (defconstant $envPrtblISOKbd 7)
- (defconstant $envStdISOADBKbd 8)
- (defconstant $envExtISOADBKbd 9)
- (defconstant $false32b 0) ; 24 bit addressing error
- (defconstant $true32b 1) ; 32 bit addressing error
-
- ; result types for RelString Call
- (defconstant $sortsBefore -1) ; first string < second string
- (defconstant $sortsEqual 0) ; first string = second string
- (defconstant $sortsAfter 1) ; first string > second string
-
- (def-mactype :qtypes (find-mactype :unsigned-byte))
- (defconstant $dummyType 0)
- (defconstant $vType 1)
- (defconstant $ioQType 2)
- (defconstant $drvQType 3)
- (defconstant $evType 4)
- (defconstant $fsQType 5)
- (defconstant $sIQType 6)
- (defconstant $dtQType 7)
-
- (def-mactype :traptype (find-mactype :unsigned-byte))
- (defconstant $OSTrap 0)
- (defconstant $ToolTrap 1)
-
- (def-mactype :paramblktype (find-mactype :unsigned-word))
- (defconstant $IOParam 0)
- (defconstant $FileParam 1)
- (defconstant $VolumeParam 2)
- (defconstant $CntrlParam 3)
- (defconstant $SlotDevParam 4)
- (defconstant $MultiDevParam 5)
- (defconstant $AccessParam 6)
- (defconstant $ObjParam 7)
- (defconstant $CopyParam 8)
- (defconstant $WDParam 9)
- (defconstant $FIDParam 10)
- (defconstant $CSParam 11)
- (defconstant $ForeignPrivParam 12)
-
- (def-mactype :syspptr (find-mactype :pointer))
- (defrecord SysParmType
- (valid :unsigned-byte)
- (aTalkA :unsigned-byte)
- (aTalkB :unsigned-byte)
- (config :unsigned-byte)
- (portA :signed-integer)
- (portB :signed-integer)
- (alarm :signed-long)
- (font :signed-integer)
- (kbdPrint :signed-integer)
- (volClik :signed-integer)
- (misc :signed-integer)
- )
-
- ; QElemPtr = ^QElem;
-
- (def-mactype :qelemptr (find-mactype :pointer))
-
- (defrecord FInfo
- (fdType :ostype) ; the type of the file
- (fdCreator :ostype) ; file's creator
- (fdFlags :signed-integer) ; flags ex. hasbundle,invisible,locked, etc.
- (fdLocation :point) ; file's location in folder
- (fdFldr :signed-integer) ; folder containing file
- )
-
- (defrecord VCB
- (qLink (:pointer :qelem))
- (qType :signed-integer)
- (vcbFlags :signed-integer)
- (vcbSigWord :signed-integer)
- (vcbCrDate :signed-long)
- (vcbLsMod :signed-long)
- (vcbAtrb :signed-integer)
- (vcbNmFls :signed-integer)
- (vcbVBMSt :signed-integer)
- (vcbAllocPtr :signed-integer)
- (vcbNmAlBlks :signed-integer)
- (vcbAlBlkSiz :signed-long)
- (vcbClpSiz :signed-long)
- (vcbAlBlSt :signed-integer)
- (vcbNxtCNID :signed-long)
- (vcbFreeBks :signed-integer)
- (vcbVN (:string 27))
- (vcbDrvNum :signed-integer)
- (vcbDRefNum :signed-integer)
- (vcbFSID :signed-integer)
- (vcbVRefNum :signed-integer)
- (vcbMAdr :pointer)
- (vcbBufAdr :pointer)
- (vcbMLen :signed-integer)
- (vcbDirIndex :signed-integer)
- (vcbDirBlk :signed-integer)
- (vcbVolBkUp :signed-long)
- (vcbVSeqNum :signed-integer)
- (vcbWrCnt :signed-long)
- (vcbXTClpSiz :signed-long)
- (vcbCTClpSiz :signed-long)
- (vcbNmRtDirs :signed-integer)
- (vcbFilCnt :signed-long)
- (vcbDirCnt :signed-long)
- (vcbFndrInfo (:array :signed-long 8))
- (vcbVCSize :signed-integer)
- (vcbVBMCSiz :signed-integer)
- (vcbCtlCSiz :signed-integer)
- (vcbXTAlBlks :signed-integer)
- (vcbCTAlBlks :signed-integer)
- (vcbXTRef :signed-integer)
- (vcbCTRef :signed-integer)
- (vcbCtlBuf :pointer)
- (vcbDirIDM :signed-long)
- (vcbOffsM :signed-integer)
- )
-
- (def-mactype :drvqelptr (find-mactype :pointer))
- (defrecord DrvQEl
- (qLink (:pointer :qelem))
- (qType :signed-integer)
- (dQDrive :signed-integer)
- (dQRefNum :signed-integer)
- (dQFSID :signed-integer)
- (dQDrvSz :signed-integer)
- (dQDrvSz2 :signed-integer)
- )
-
- (def-mactype :parmblkptr (find-mactype :pointer))
- (defrecord ParamBlockRec
- (qLink (:pointer :qelem))
- (qType :signed-integer)
- (ioTrap :signed-integer)
- (ioCmdAddr :pointer)
- (ioCompletion :pointer)
- (ioResult :signed-integer)
- (ioNamePtr (:pointer (:string 255)))
- (ioVRefNum :signed-integer)
- (:variant
-
- ((ioRefNum :signed-integer)
- (ioVersNum :signed-byte)
- (ioPermssn :signed-byte)
- (ioMisc :pointer)
- (ioBuffer :pointer)
- (ioReqCount :signed-long)
- (ioActCount :signed-long)
- (ioPosMode :signed-integer)
- (ioPosOffset :signed-long))
-
- ((ioFRefNum :signed-integer)
- (ioFVersNum :signed-byte)
- (filler1 :signed-byte)
- (ioFDirIndex :signed-integer)
- (ioFlAttrib :signed-byte)
- (ioFlVersNum :signed-byte)
- (ioFlFndrInfo :finfo)
- (ioFlNum :signed-long)
- (ioFlStBlk :signed-integer)
- (ioFlLgLen :signed-long)
- (ioFlPyLen :signed-long)
- (ioFlRStBlk :signed-integer)
- (ioFlRLgLen :signed-long)
- (ioFlRPyLen :signed-long)
- (ioFlCrDat :signed-long)
- (ioFlMdDat :signed-long))
-
- ((filler2 :signed-long)
- (ioVolIndex :signed-integer)
- (ioVCrDate :signed-long)
- (ioVLsBkUp :signed-long)
- (ioVAtrb :signed-integer)
- (ioVNmFls :signed-integer)
- (ioVDirSt :signed-integer)
- (ioVBlLn :signed-integer)
- (ioVNmAlBlks :signed-integer)
- (ioVAlBlkSiz :signed-long)
- (ioVClpSiz :signed-long)
- (ioAlBlSt :signed-integer)
- (ioVNxtFNum :signed-long)
- (ioVFrBlk :signed-integer))
-
- ((ioCRefNum :signed-integer)
- (csCode :signed-integer)
- (csParam (:array :signed-integer 11)))
-
- ((filler3 :signed-long)
- (ioMix :pointer)
- (ioFlags :signed-integer)
- (ioSlot :signed-byte)
- (ioID :signed-byte))
-
- ((filler4 :signed-long)
- (ioMMix :pointer)
- (ioMFlags :signed-integer)
- (ioSEBlkPtr :pointer))
- ))
-
- (def-mactype :evqelptr (find-mactype :pointer))
- (defrecord EvQEl
- (qLink (:pointer :qelem))
- (qType :signed-integer)
- (evtQWhat :signed-integer) ; this part is identical to the EventRecord as...
- (evtQMessage :signed-long) ; defined in ToolIntf
- (evtQWhen :signed-long)
- (evtQWhere :point)
- (evtQModifiers :signed-integer)
- )
-
- (defrecord VBLTask
- (qLink (:pointer :qelem))
- (qType :signed-integer)
- (vblAddr :pointer)
- (vblCount :signed-integer)
- (vblPhase :signed-integer)
- )
-
- (defrecord DeferredTask
- (qLink (:pointer :qelem)) ; next queue entry
- (qType :signed-integer) ; queue type
- (dtFlags :signed-integer) ; reserved
- (dtAddr :pointer) ; pointer to task
- (dtParm :signed-long) ; optional parameter
- (dtReserved :signed-long) ; reserved--should be 0
- )
-
- (defrecord QElem
- (:variant
-
- ((dtQElem :deferredtask)) ; deferred
-
- ((vblQElem :vbltask)) ; vertical blanking
-
- ((ioQElem :paramblockrec)); I/O parameter block
-
- ((drvQElem :drvqel)) ; drive
-
- ((evQElem :evqel)) ; event
-
- ((vcbQElem :vcb)) ; volume control block
- ))
-
- (def-mactype :qhdrptr (find-mactype :pointer))
- (defrecord QHdr
- (qFlags :signed-integer)
- (qHead (:pointer :qelem))
- (qTail (:pointer :qelem))
- )
-
- (defrecord DateTimeRec
- (year :signed-integer)
- (month :signed-integer)
- (day :signed-integer)
- (hour :signed-integer)
- (minute :signed-integer)
- (second :signed-integer)
- (dayOfWeek :signed-integer)
- )
-
- (defrecord SysEnvRec
- (environsVersion :signed-integer)
- (machineType :signed-integer)
- (systemVersion :signed-integer)
- (processor :signed-integer)
- (hasFPU :boolean)
- (hasColorQD :boolean)
- (keyBoardType :signed-integer)
- (atDrvrVersNum :signed-integer)
- (sysVRefNum :signed-integer)
- )
-
-
- (deftrap _getsyspptr nil
- (:no-trap (:pointer :sysparmtype))
- (:no-trap (%int-to-ptr #x1f8)))
-
- (deftrap _sysbeep ((duration :signed-integer))
- nil
- (:stack-trap #xA9C8))
-
- (deftrap _keytrans ((transdata :pointer) (keycode :signed-integer) (state (:pointer :signed-long)))
- (:stack :signed-long)
- (:stack-trap #xA9C3))
-
- (deftrap _dtinstall ((dttaskptr (:pointer :qelem)))
- (:d0 :signed-integer)
- (:register-trap #xA082 :a0 dttaskptr))
-
- (deftrap _getmmumode nil
- (:no-trap :signed-byte)
- (:no-trap (ccl::%get-signed-byte (%int-to-ptr #xcb2))))
-
- (deftrap _swapmmumode ((mode (:pointer :signed-byte)))
- (:no-trap :byte)
- (:no-trap (setf (%get-byte mode)
- (ccl:register-trap #xA05D :d0 (%get-byte mode) :d0))))
-
- (deftrap _sysenvirons ((versionrequested :signed-integer) (theworld (:pointer :sysenvrec)))
- (:d0 :signed-integer)
- (:register-trap #xA090 :d0 versionrequested :a0 theworld))
-
- ; Warning. Assuming that (pointer to long word secs) matches (time (:pointer :signed-long)) in trap readdatetime
- (deftrap _readdatetime ((time (:pointer :signed-long)))
- (:a0 :signed-integer)
- (:register-trap #xA039 :a0 time))
-
- (deftrap _getdatetime ((secs (:pointer :signed-long)))
- nil
- (:no-trap (%put-long secs (%get-long (%int-to-ptr #x20c)))))
-
- ; Warning. Assuming that (secs long word) matches (time :signed-long) in trap setdatetime
- (deftrap _setdatetime ((time :signed-long))
- (:d0 :signed-integer)
- (:register-trap #xA03A :d0 time))
-
- (deftrap _settime ((d :datetimerec))
- nil
- (:no-trap (ccl:register-trap #xA03A :d0 (ccl:register-trap #xA9C7 :a0 d :d0))))
-
- (deftrap _gettime ((d (:pointer :datetimerec)))
- nil
- (:register-trap #xA9C6 :d0 (%get-long (%int-to-ptr #x020C)) :a0 d))
-
- (deftrap _date2secs ((d :datetimerec) (secs (:pointer :signed-long)))
- nil
- (:no-trap
- (%put-long secs (ccl:register-trap #xa9C7 :a0 d :d0))))
-
- (deftrap _secs2date ((secs :signed-long) (d (:pointer :datetimerec)))
- nil
- (:register-trap #xA9C6 :d0 secs :a0 d))
-
- (deftrap _delay ((numticks :signed-long) (finalticks (:pointer :signed-long)))
- nil
- (:no-trap (%put-long finalticks (ccl:register-trap #xA03B :a0 (%int-to-ptr numticks) :d0))))
-
- (deftrap _gettrapaddress ((trapnum :signed-integer))
- (:a0 :signed-long)
- (:register-trap #xA146 :d0 trapnum ))
-
- (deftrap _settrapaddress ((trapaddr :signed-long) (trapnum :signed-integer))
- nil
- (:register-trap #xA047 :a0 trapaddr :d0 trapnum))
-
-
- (deftrap _ngettrapaddress ((trapnum :signed-integer))
- (:a0 :signed-long)
- (:register-trap #xA346 :d0 trapnum))
-
- (deftrap _nsettrapaddress ((trapaddr :signed-long) (trapnum :signed-integer))
- nil
- (:register-trap #xA247 :a0 trapaddr :d0 trapnum))
-
- (deftrap _getostrapaddress ((trapnum :signed-integer))
- (:a0 :signed-long)
- (:register-trap #xA346 :d0 trapnum :a0))
-
- (deftrap _setostrapaddress ((trapaddr :signed-long) (trapnum :signed-integer))
- nil
- (:register-trap #xA247 :a0 trapaddr :d0 trapnum))
-
- (deftrap _gettooltrapaddress ((trapnum :signed-integer))
- (:a0 :signed-long)
- (:register-trap #xA746 :d0 trapnum))
-
- (deftrap _settooltrapaddress ((trapaddr :signed-long) (trapnum :signed-integer))
- nil
- (:register-trap #xA647 :a0 trapaddr :d0 trapnum))
-
- (deftrap _gettoolboxtrapaddress ((trapnum :signed-integer))
- (:a0 :signed-long)
- (:register-trap #xA746 :d0 trapnum))
-
- (deftrap _settoolboxtrapaddress ((trapaddr :signed-long) (trapnum :signed-integer))
- nil
- (:register-trap #xA647 :a0 trapaddr :d0 trapnum))
-
- (deftrap _writeparam nil
- (:d0 :signed-integer)
- (:register-trap #xA038))
-
- ; the CaseSens parameter is set true with the :CASE keyword.
- ; The DiacSens parameter is set true with the :MARKS keyword.
- ; e.g. (#_EqualString :marks :case str1 str2)
- (DEFTRAP _EQUALSTRING ((STR1 (:STRING 255)) (STR2 (:STRING 255)))
- (:D0 :signed-integer)
- (zerop (the fixnum
- (:REGISTER-TRAP 41020
- :A0 (%inc-ptr str1)
- :A1 (%inc-ptr str2)
- :D0 (LOGIOR (the fixnum (ASH (the fixnum (%GET-BYTE STR1))
- 16))
- (the fixnum (%GET-BYTE STR2)))))))
-
- (deftrap _cmpstring ((s1 :pointer) (s2 :pointer) (lengths :unsigned-long))
- (:d0 :signed-integer)
- (:register-trap #xA03C :a0 s1 :a1 s2 :d0 lengths))
-
- (deftrap _uprstring ((thestring (:pointer (:string 255))))
- nil
- (:register-trap #xA054 :d0 (ccl:%get-unsigned-byte the-string) :a0 (%inc-ptr thestring )))
-
- (deftrap _enqueue ((qelement (:pointer :qelem)) (qheader (:pointer :qhdr)))
- nil
- (:register-trap #xA96F :a0 qelement :a1 qheader))
-
- (deftrap _dequeue ((qelement (:pointer :qelem)) (qheader (:pointer :qhdr)))
- (:d0 :signed-integer)
- (:register-trap #xA96E :a0 qelement :a1 qheader))
-
- #| If you really want to do this, it's time to learn LAP
- (deftrap _setcurrenta5 nil
- (:no-trap :signed-long)
- (:no-trap (setcurrentA5)))
-
- (deftrap _seta5 ((newa5 :signed-long))
- (:no-trap :signed-long)
- (:no-trap (setA5 newA5)))
- |#
-
- (deftrap _environs ((rom (:pointer :signed-integer)) (machine (:pointer :signed-integer)))
- nil
- (:no-trap (environs rom machine)))
-
- (deftrap _relstring ((str1 (:string 255)) (str2 (:string 255)))
- (:d0 :signed-integer)
- (:register-trap #xA050
- :a0 (%inc-ptr str1)
- :a1 (%inc-ptr str2)
- :d0 (+ (ash 16 (%get-unsigned-byte str1)) (%get-unsigned-byte str2))))
-
- (deftrap _handtohand ((thehndl (:pointer :handle)))
- (:no-trap :signed-integer)
- (:no-trap (ccl::%stack-block ((ret 8))
- (ccl::%gen-trap #xA9E1 :return-block ret :a0 (%get-ptr thehndl) '(:d0 :a0))
- (%put-ptr thehndl (%get-ptr ret 4))
- (%get-signed-word ret 2))))
-
- (deftrap _ptrtoxhand ((srcptr :pointer) (dsthndl :handle) (size :signed-long))
- (:d0 :signed-integer)
- (:register-trap #xA9E2 :a0 srcptr :a1 dsthndl :d0 size))
-
- (deftrap _ptrtohand ((srcptr :pointer) (dsthndl (:pointer :handle)) (size :signed-long))
- (:no-trap :signed-integer)
- (:no-trap (ccl::%stack-block ((ret 8))
- (ccl::%gen-trap #xA9E3 :return-block ret :a0 srcptr :d0 size '(:d0 :a0))
- (%put-ptr dsthndl (%get-ptr ret 4))
- (%get-signed-word ret 2))))
-
- (deftrap _handandhand ((hand1 :handle) (hand2 :handle))
- (:d0 :signed-integer)
- (:register-trap #xA9E4 :a0 hand1 :a1 hand2))
-
- (deftrap _ptrandhand ((ptr1 :pointer) (hand2 :handle) (size :signed-long))
- (:d0 :signed-integer)
- (:register-trap #xA9EF :a0 ptr1 :a1 hand2 :d0 size))
-
- (deftrap _initutil nil
- (:d0 :signed-integer)
- (:register-trap #xA03f))
-
- (deftrap _swapinstructioncache ((cacheenable :boolean))
- (:a0 :boolean)
- (:register-trap #xA198 :a0 (%int-to-ptr cacheenable) :d0 0))
-
- (deftrap _flushinstructioncache nil
- nil
- (:register-trap #xA198 :d0 1))
-
- (deftrap _swapdatacache ((cacheenable :boolean))
- (:a0 :boolean)
- (:register-trap #xA198 :a0 (%int-to-ptr cacheenable) :d0 2))
-
- (deftrap _flushdatacache nil
- nil
- (:register-trap #xA198 :d0 3))
-
- ; $ENDC
-
-
- (export '($foreignprivparam $csparam $fidparam $wdparam $copyparam $objparam
- $accessparam $multidevparam $slotdevparam $cntrlparam $volumeparam
- $fileparam $ioparam $tooltrap $ostrap $dtqtype $siqtype $fsqtype
- $evtype $drvqtype $ioqtype $vtype $dummytype $sortsafter $sortsequal
- $sortsbefore $true32b $false32b $envextisoadbkbd $envstdisoadbkbd
- $envprtblisokbd $envprtbladbkbd $envstandadbkbd $envaextendkbd
- $envmacpluskbd $envmacandpad $envmackbd $envunknownkbd $env68040
- $env68030 $env68020 $env68010 $env68000 $envcpuunknown $envmaciifx
- $envmaciici $envportable $envse30 $envmaciicx $envmaciix $envmacii
- $envse $envmacplus $env512ke $envmachunknown $envxl $envmac
- $cursysenvvers $usemidi $useextclk $useasync $useatalk $usefree))
- (provide-interface 'OSUTILS)
-